Improve treesit-forward-sexp behavior for leaf nodes (bug#68899)
authorYuan Fu <casouri@gmail.com>
Sun, 4 Feb 2024 05:24:29 +0000 (21:24 -0800)
committerYuan Fu <casouri@gmail.com>
Mon, 5 Feb 2024 00:48:59 +0000 (16:48 -0800)
commit9dbbf93a4a08f71cf5f2278ec2a22a722fe0e0f7
treeef74434f623af8b1234c8dcddc1459b3bebd2282
parentb2d350cfc0bf8f0e3198bffcebe60a43341fb340
Improve treesit-forward-sexp behavior for leaf nodes (bug#68899)

treesit-forward-sexp uses treesit--navigate-thing with 'restricted'
tactic.  In this tactic we don't move over the parent thing.  However,
this makes forward-sexp useless for symbols when point is in the
symbol rather than at the beginning of it: in that case, the symbol is
considered parent and treesit-forward-sexp won't move to the end of
it.

To solve that, we allow to move across the parent even in 'restricted'
mode if the parent is a leaf thing.

Here, "leaf thing" is defined as "doesn't have any child 'thing'
inside it".

* lisp/treesit.el (treesit--navigate-thing): Move over parent in
'restricted' tactic if the parent is a leaf thing.
lisp/treesit.el